package com.zmn.plat.services.interfaces.user;

import java.util.List;

import com.zmn.plat.model.entity.user.UserCount;
import com.zmn.plat.model.entity.user.UserQuery;

/**
 * @author nowind
 * @since 17/07/31 11:37
 */
public interface UserCountService {

    UserCount findByKey(Integer userId);

    List<UserCount> listPageByQuery(UserQuery query);

    List<UserCount> listByQuery(UserQuery query);

    Integer countByQuery(UserQuery query);

    /**
     * 更新购买相关统计,购买次数增加1
     * 
     * @param userId
     * @param changes
     *            购买订单金额
     * @return
     */
    Integer updateBuyCount(Integer userId, Integer changes);

    Integer updateBuyCount(UserCount userCount);

    /**
     * 更新出售相关统计,购买次数增加1
     * 
     * @param userId
     * @param changes
     *            出售订单金额
     * @return
     */
    Integer updateSaleCount(Integer userId, Integer changes);

    Integer updateSaleCount(UserCount userCount);

    /**
     * 更新积分
     * 
     * @param userId
     * @param changes
     *            积分增减量,如扣减积分,变量为负数
     * @return
     */
    Integer updatePointCount(Integer userId, Integer changes);

    Integer updatePointCount(UserCount userCount);

    /**
     * 更新成长值
     * 
     * @param userId
     * @param changes
     *            成长值增减量,如扣减成长值,变量为负数
     * @return
     */
    Integer updateGrowthCount(Integer userId, Integer changes);

    Integer updateGrowthCount(UserCount userCount);

    /**
     * 增减账户余额
     * 
     * @param userId
     * @param changes
     *            余额增减量,如余额减少,变量为负数
     * @return
     */
    Integer updateBalance(Integer userId, Integer changes);

    Integer updateBalance(UserCount userCount);

    /**
     * 充值
     * 
     * @param userId
     * @param changes
     *            充值金额
     * @return
     */
    Integer updateRecharge(Integer userId, Integer changes);

    Integer updateRecharge(UserCount userCount);

    Integer insert(UserCount userCount);

    Integer deleteByKey(Integer userId);
}
